package com.scg33.util.population;

import java.util.Date;
import java.util.Hashtable;
import java.util.Random;

import com.coreweb.util.Misc;
import com.scg33.dominio.*;

public class Population {

	static Misc m = new Misc();

	String fileOut = "./WEB-INF/doc/datosAcceso.txt";

	private String getLogin(String e) {
		String out = "";
		int p = e.trim().indexOf("@");
		out = e.substring(0, p);
		return out;
	}

	Random rand = new Random(System.currentTimeMillis());
	Hashtable<String, String> cls = new Hashtable<String, String>();

	private String getClave() {
		String out = "";
		boolean noRepetido = false;
		while (noRepetido == false) {
			// para que no haya dos claves iguales
			int v = 1000 + rand.nextInt(8999);
			out = (" " + v).trim();

			String out2 = this.cls.get(out);
			if (out2 == null) {
				noRepetido = true;
				this.cls.put(out, "SI");
			}
		}

		return out;
	}

	private void cargaCapitulosUsuario() throws Exception {
		RegisterDomain rr = RegisterDomain.getInstance();
		rr.dropAllTables();

		String file = "" + (new Date()) + "\n\n";

		PopuDatosCapitulo pd = new PopuDatosCapitulo();

		for (int i = 0; i < pd.dc.length; i++) {

			String[] dato = pd.dc[i];

			// acceso Presidente
			Acceso aP = new Acceso();
			aP.setNombre(dato[4].trim());
			String login = this.getLogin(dato[8]);
			aP.setUsuario(login);
			String clave = this.getClave();
			aP.setClave(m.encriptar(clave));
			rr.saveObject(aP, "popu");

			// acceso Miembro
			Acceso aM = new Acceso();
			aM.setNombre("Aprendiz M∴");
			aM.setUsuario("aprendiz");
			String claveM = this.getClave();
			aM.setClave(m.encriptar(claveM));
			rr.saveObject(aM, "popu");

			// Capitulo
			Capitulo c1 = new Capitulo();
			String nomCap = dato[0] + " " + dato[2] + " " + dato[3];
			c1.setNombre(nomCap);
			c1.setAdministrador(aP);
			String lista = dato[1].toLowerCase() + "@supremoconsejo33.org.py";
			c1.setLista(lista);

			String info = "";
			info += nomCap + "\n";
			info += "Presidente: " + dato[4];
			info += "tel: " + dato[7];
			info += "email: " + dato[8] + "\n";
			info += "\n";
			info += "Lista: " + lista + "\n";
			info += "Reuniones: " + dato[5] + "\n";
			info += "Lugar: " + pd.getTemplo(dato[6]) + "\n";

			c1.setInformacionGeneral(info);
			rr.saveObject(c1, "popu");

			// relaciones
			aP.getCapitulos().add(c1);
			rr.saveObject(aP, "popu");

			aM.getCapitulos().add(c1);
			rr.saveObject(aM, "popu");

			String lineFile = "";
			lineFile += nomCap + "\n";
			lineFile += "Presidente: " + dato[4] + "\n";
			lineFile += "Lista: " + lista + "\n";
			lineFile += "Usuario: " + login + "       Clave: " + clave + "\n";
			lineFile += "Miembro: aprendiz       Clave: " + claveM + "\n";
			lineFile += "------------------- \n";

			System.out.println(lineFile);

			file += lineFile;
		}

		this.m.grabarStringToArchivo(fileOut, file);

	}

	public static void main(String[] args) throws Exception {
		Population p = new Population();

		p.cargaCapitulosUsuario();
	}

	public static void xxmain(String[] args) throws Exception {

		RegisterDomain rr = RegisterDomain.getInstance();
		rr.dropAllTables();

		// =============
		// c1 -> a1 (adm)
		// c1 -> a2

		Acceso a1 = new Acceso();
		a1.setNombre("Usuario uno");
		a1.setUsuario("u1");
		a1.setClave(m.encriptar("c1"));
		rr.saveObject(a1, "popu");

		Acceso a2 = new Acceso();
		a2.setNombre("Usuario Dos");
		a2.setUsuario("u2");
		a2.setClave(m.encriptar("c2"));
		rr.saveObject(a2, "popu");

		Capitulo c1 = new Capitulo();
		c1.setNombre("Capitulo 1");
		c1.setAdministrador(a1);
		c1.setInformacionGeneral("Dato 1\n Dato 2\n Dato 3");
		c1.setLista("lista@correo.com.py");
		rr.saveObject(c1, "popu");

		a1.getCapitulos().add(c1);
		rr.saveObject(a1, "popu");

		a2.getCapitulos().add(c1);
		rr.saveObject(a2, "popu");

		Novedad n1 = new Novedad();
		n1.setFecha(m.getFechaManana());
		n1.setTitulo("mañaana");
		n1.setDescripcion("dato 1");
		rr.saveObject(n1, "popu");

		Novedad n2 = new Novedad();
		n2.setFecha(m.getFechaHoy00());
		n2.setTitulo("hoy 00");
		n2.setDescripcion("dato 2");
		rr.saveObject(n2, "popu");

		Novedad n3 = new Novedad();
		n3.setFecha(m.getFechaHoy2359());
		n3.setTitulo("goy 23:59");
		n3.setDescripcion("dato 3");
		rr.saveObject(n3, "popu");

		c1.getNovedades().add(n1);
		c1.getNovedades().add(n2);
		c1.getNovedades().add(n3);
		rr.saveObject(c1, "popu");

	}

}
